~ chicken-core (master) /manual/Deviations from the standard
Trap1[[tags: manual]]23== Confirmed deviations from R7RS45=== Number of arguments to procedures and macros67The maximal number of arguments that may be passed to a8compiled procedure or macro is limited to around 1000.9Likewise, the maximum number of values that can be passed10to continuations captured using {{call-with-current-continuation}}11is 1000. This is an implementation restriction that is unlikely12to be lifted.131415=== Numeric string-conversion considerations1617In some cases the runtime system uses the numerical string-conversion18routines of the underlying C library. Consequently, the procedures19{{string->number}}, {{read}}, {{write}}, and {{display}} do not obey20read/write invariance for inexact numbers.212223=== Environments and non-standard syntax2425In addition to the standard bindings, {{scheme-report-environment}} and26{{null-environment}} contain additional non-standard bindings for the27following syntactic forms: {{import}}, {{require-extension}},28{{require-library}}, {{begin-for-syntax}}, {{export}}, {{module}},29{{cond-expand}}, {{syntax}}, {{reexport}}, {{import-for-syntax}}.3031=== Assignment to unbound variables3233{{set!}} may assign values to unbound variables; this creates a new34top-level binding for the variable, as if {{define}} had been used35instead. This extension must be used with care, as typos might cause36unexpected results:3738<enscript highlight="scheme">39> (let ((frob 5))40 (set! frov (+ frob 1)) ; oops!41 frob)42> 543> frov44> 645</enscript>4647== Unconfirmed deviations4849=== {{char-ready?}}5051The procedure {{char-ready?}} always returns {{#t}} for52terminal ports.53545556== Doubtful deviations5758== Non-deviations that might surprise you5960=== {{let-syntax}} and {{letrec-syntax}}6162{{let-syntax}} and {{letrec-syntax}} introduce a new scope.636465=== {{equal?}} compares all structured data recursively6667{{equal?}} compares all structured data with the exception of68procedures recursively, while R7RS specifies that {{eqv?}} is used for69data other than pairs, strings and vectors. However, R7RS does not70dictate the treatment of data types that are not specified by R7RS717273---74Previous: [[Using the compiler]]7576Next: [[Extensions to the standard]]